import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

//变式：数组有重复数字，需要输出所有符合要求的数字对
class code2 {
    public ArrayList<ArrayList<Integer>> func1 (int[] nums, int target){
        Map<Integer,ArrayList<Integer>> map = new HashMap<>();
        ArrayList<ArrayList<Integer>> ret = new ArrayList<>();

        for (int i = 0; i < nums.length; i++) {
           int x = target - nums[i];
            //看是否存在x
           if (map.containsKey(x)) {
               for(int j: map.get(x)) {
                   ArrayList<Integer> tmp = new ArrayList<>();
                   tmp.add(j);
                   tmp.add(i);
                   //结果
                   ret.add(tmp);
               }
           }
           //加入map
           if (!map.containsKey(nums[i])) {
               map.put(nums[i], new ArrayList<>());
           }
           map.get(nums[i]).add(i);
        }
        return ret;
    }

}